package bil.download;

import java.util.ArrayList;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;

/**
 *
 * @author Eduardo Folly
 */
public class Atualizador implements Runnable {

    private JTable tabela;
    private JLabel velocidade;
    private JComponent comp;
    private boolean continua = true;
    private long sleep;
    private long sizeold = 0;
    private long sizenew = 0;
    private List<Long> vels = new ArrayList();

    public Atualizador(JTable tabela, JLabel velocidade, JComponent comp) {
        this(tabela, velocidade, comp, 200);
    }

    public Atualizador(JTable tabela, JLabel velocidade, JComponent comp, long sleep) {
        this.tabela = tabela;
        this.velocidade = velocidade;
        this.comp = comp;
        comp.setEnabled(false);
        this.sleep = sleep;
    }

    public void run() {
        while (continua) {
            try {
                Thread.sleep(sleep);
                long novo = sizenew;

                long vel = ((novo - sizeold) * (1000 / sleep)) / 1024;

                if (vels.size() > 50) {
                    vels.remove(0);
                }

                vels.add(vel);

                long media = 0;
                for (long l : vels) {
                    media += l;
                }
                media = media / vels.size();

                velocidade.setText(Long.toString(vel) + " Kb/s");

                sizeold = novo;

                tabela.repaint();
            } catch (Exception ex) {
            }
        }
        velocidade.setText("0 Kb/s");
    }

    public void velocidade(long tam) {
        sizenew += tam;
    }

    public void terminate() {
        continua = false;
        comp.setEnabled(true);
    }
}
